package com.juzi.algorithm;

public class Introduce {
    public static void main(String[] args) {
        System.out.println(
                "--------------------------------\n" +
                        "冒泡排序的思想\n" +
                        "每次从数组中找出最大值放在数组的后面去。\n"+
                "--------------------------------\n" +
                        "实现冒泡排序的关键步骤分析\n" +
                        "确定总共需要做几轮： 数组的长度-1.\n" +
                        "每轮比较几次:\n" +
                        " i(轮数)       次数      次数规律:  数组的长度 - i\n" +
                        " 1                3\n" +
                        " 2                2\n" +
                        " 3                1\n" +
                        "当前位置大于后一个位置则交换数据\n"+
                "--------------------------------\n" +
                        "选择排序的思想\n" +
                        "每轮选择当前位置，开始找出后面的较小值与该位置交换\n"+
                "--------------------------------\n" +
                        "选择排序的关键\n" +
                        "确定总共需要选择几轮： 数组的长度-1.\n" +
                        "控制每轮从以前位置为基准，与后面元素选择几次。\n"+
                "--------------------------------\n" +
                        "基本查找\n" +
                        "结论：在数据量特别大的时候，基本查找从前往后寻找的性能是很差的！\n"+
                "--------------------------------\n" +
                        "二分查找\n" +
                        "二分查询性能好，二分查找的前提是必须是排好序的数据。\n" +
                        "二分查找相当于每次去掉一半的查找范围\n" +
                        "结论：二分查找正常的检索条件应该是开始位置min <= 结束位置max \n"+
                "--------------------------------\n" +
                        "1、数组的二分查找的实现步骤是什么样的?\n" +
                        "定义变量记录左边和右边位置。\n" +
                        "使用while循环控制查询（条件是左边位置<=右边位置）\n" +
                        "循环内部获取中间元素索引\n" +
                        "判断当前要找的元素如果大于中间元素，左边位置=中间索引+1\n" +
                        "判断当前要找的元素如果小于中间元素，右边位置=中间索引-1\n" +
                        "判断当前要找的元素如果等于中间元素，返回当前中间元素索引。\n"
        );
    }
}
